package com.wang.users.pojo;

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.wang.common.pojo.BasePojo;
import com.wang.common.util.ConstatFinalUtil;
import lombok.Data;

import java.io.Serializable;
import java.util.Objects;

/**
 * 车辆表
 *
 * @author ZjxMi
 */
@TableName(value = "at_car")
@Data
public class AtCar extends BasePojo implements Serializable {
    private static final long serialVersionUID = 708644954121408354L;

    /**
     * 车牌颜色:0:蓝,1:绿,2:黄
     */
    @TableField(value = "colorType")
    private String colorType;

    /**
     * 类型:0:小汽车,1:公交车,2:大卡车
     */
    @TableField(value = "carType")
    private String carType;

    @TableField(exist = false)
    private String carTypeStr;
    @TableField(exist = false)
    private String colorTypeStr;

    @Override
    public JSONObject getEnumsJson() {
        JSONObject enumsJson = super.getEnumsJson();
        AtCarEnum[] enumsArr = AtCarEnum.values();
        for (AtCarEnum enumsTemp : enumsArr) {
            String varName = enumsTemp.toString();
            String[] varNameArr = varName.split(ConstatFinalUtil.FINAL_JAVA_ENUMS_SPLIT);
            if (varNameArr.length == 2) {
                /* 条目 */
                JSONObject jsonEntryTemp = new JSONObject();
                jsonEntryTemp.put(ConstatFinalUtil.FINAL_ENUMSVAL, varName);
                jsonEntryTemp.put(ConstatFinalUtil.FINAL_CODE, enumsTemp.getCode());
                jsonEntryTemp.put(ConstatFinalUtil.FINAL_INFO, enumsTemp.getInfo());

                String jsonKey = varNameArr[0];
                /* 源数组 */
                JSONArray jsonArrVal = enumsJson.getJSONArray(jsonKey);
                if (Objects.isNull(jsonArrVal)) {
                    jsonArrVal = new JSONArray();
                }
                jsonArrVal.add(jsonEntryTemp);

                /* 存储最终结果 */
                enumsJson.put(jsonKey, jsonArrVal);
            }
        }
        return enumsJson;
    }

    public String getCarTypeStr() {
        AtCarEnum[] enumsArr = AtCarEnum.values();
        for (AtCarEnum enumsTemp : enumsArr) {
            String varName = enumsTemp.toString();
            if (varName.startsWith("CARTYPE_") && enumsTemp.getCode().equalsIgnoreCase(this.getCarType()) ) {
                this.carTypeStr = enumsTemp.getInfo();
                break;
            }
        }
        return carTypeStr;
    }

    public String getColorTypeStr() {
        AtCarEnum[] enumsArr = AtCarEnum.values();
        for (AtCarEnum enumsTemp : enumsArr) {
            String varName = enumsTemp.toString();
            if (varName.startsWith("COLORTYPE_") && enumsTemp.getCode().equalsIgnoreCase(this.getColorType()) ) {
                this.colorTypeStr = enumsTemp.getInfo();
                break;
            }
        }
        return colorTypeStr;
    }
}